草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 通过指向指针的指针访问结构元素的地址

假设我有一个结构:structABC{chara;charb;charc;}我可以将指向上述结构的指针声明为:结构ABC**abc现在abc是一个指向结构指针*abc的指针,而*abc是一个指向结构的结构指针美国广播公司。因此;sizeof(**abc)将为4,sizeof(*abc)也将为4而sizeof(abc)将为3(考虑指针大小为4个字节,字符大小为1个字节)。我的问题是:如何使用上面声明的abc声明一个指向成员变量c的字符指针? 最佳答案 sizeof(**abc)willbe4,sizeof(*abc)willalsob

c++ - 在编译代码中包含一个大文本变量是个好主意吗?

我正在编写一个为用户生成格式化文件的程序,但它不仅生成格式化文件,它还做了更多。我想向最终用户分发一个二进制文件,当用户运行该程序时,它会为用户生成具有适当数据的xml文件。为了实现这一点,我想将文件内容提供给一个用代码编译的char数组变量。当用户运行程序时,我会把char文件写出来,为用户生成一个xml文件。char*buffers="axmlformatfilecontents,\thisrepresentmanyblocktext\fromafile,...";我有两个问题。Q1。对于如何将我的文件内容编译成二进制文件,即作为一个二进制文件分发,您有任何其他想法吗?Q2。如上所

c++ - 这个函数的参数在哪里?

void*(*proto_type(longint,char*b))(constchar*b,unsignedshortintd);返回类型是void*,proto_type是函数名?或者这是指向函数的指针?哪些是参数:(longint,char*b)或这个(constchar*b,unsignedshortintd)请解释一下这个函数是如何工作的。 最佳答案 void*(*proto_type(longint,char*b))(constchar*b,unsignedshortintd);这是一个函数声明。函数名为proto_ty

c++ - 是否可以访问物理地址0?

在C/C++中,不允许访问地址为0的数据。但是,物理内存是从0开始编号的。在DOS时代,中断vector表位于物理地址0。第一个中断vector是被零除异常的处理程序。我的问题是:什么情况下允许访问物理地址0? 最佳答案 要访问物理地址零,这取决于您所使用的平台。该语言不知道底层寻址模型,它取决于操作系统。在裸机环境中,如果启用了分页,您可以完全控制页表,或者如果未启用分页,则只取消引用零。在某些Unix和Linux变体上,您执行mmap并且可能还打开/dev/mem以获取逻辑地址非零但物理地址为零的非空指针,它可能需要一些访问权限

c++ - 为什么我可以在 C 中调用函数而不声明它,但不能在 C++ 中调用?

在C++中,在函数声明之前调用它是一个编译器错误。但在C中,它可能会编译。#includeintmain(){foo();//foo()iscalledbeforeitsdeclaration/definition}intfoo(){printf("Hello");return0;}我试过并且知道它是正确的,但我无法理解背后的原因。任何人都可以解释编译过程实际上是如何发生的以及两种语言的不同之处。 最佳答案 事实是代码“编译”为c程序并不意味着你可以做到。编译器应该警告函数foo()的隐式声明。在这种特殊情况下,隐式声明将声明一个相

c++ - arr[0] 的大小怎么是 8 个字节?

我正在浏览寻找一种方法来查找给定矩阵中的行数和列数,而无需任何其他信息,我找到了这个答案。Givenamatrix,findnumberofrowsandcolumns这是上述问题的第二个答案的代码片段:intmain(){floata[9][2]={{0,1},{1,1}};introw=(sizeof(a)/sizeof(a[0]));intcol=(sizeof(a)/sizeof(a[0][0]))/row;printf("%d\n",row);printf("%d\n",col);return0;}sizeof(a[0])是怎么变成8的?在我的理解中,指针的通用大小在32位架

c++ - 编译器是否优化对常量变量的引用?

当谈到C和C++语言时,编译器是否优化了对常量变量的引用,以便程序自动知道所引用的值是什么,而不必查看常量变量的内存位置?说到数组,是否取决于数组中指向的索引值在编译时是否为常量?例如,看一下这段代码:intmain(void){1:chartesst[3]={'1','3','7'};2:charerm=tesst[1];}编译器是否在编译时将第2行“更改”为“charerm='3'”? 最佳答案 我个人希望发布的代码变成“无”,因为两个变量都没有实际使用,因此可以删除。但是,是的,现代编译器(gcc、clang、msvc等)应该

c++ - 我什么时候不需要 typedef?

遇到一些代码阅读typedefenumeEnum{c1,c2}tagEnum;typedefstruct{inti;doubled;}tagMyStruct;我听说这些结构来自C。在C++中你可以很容易地写enumeEnum{c1,c2};structMyStruct{inti;doubled;};这是真的吗?您什么时候需要第一个变体? 最佳答案 首先,这两个声明在C和C++中都是合法的。但是,在C中,它们的语义略有不同。(特别是,您稍后引用该结构的方式会有所不同)。要理解的关键概念是,在C中,结构存在于单独的命名空间中。所有内置类

c++ - 如何让 FindFirstFile 对文件进行排序

我正在使用标准的FindFirst和FindNext来检索目录中的所有文件但我需要对结果进行排序(按照与在资源管理器中单击名称列基本排序相同的顺序)我怎样才能做到这一点这必须通过Win32完成谢谢 最佳答案 您可以使用IndexingService为此,但我建议您在使用FindFirstFile时自己处理排序。无法使用FindFirstFileWin32API进行排序。有稍微高级一点的FindFirstFileEx,但即使这样也不允许排序。有个陈峰postonTheOldNewThingaboutFindFirstFile'slim

c++ - 在 C++ 中初始化数组

我看到的每个地方都有人大声争论未初始化的变量是不好的,我当然同意并理解为什么——但是;我的问题是,是否存在您不想这样做的情况?例如取代码:chararrBuffer[1024]={'\0'};将整个数组设为NULL是否会对性能产生影响,而不是使用数组而不初始化它? 最佳答案 我假定堆栈初始化,因为静态数组是自动初始化的。G++输出charwhatever[2567]={'\0'};8048530:8d95f5f5fffflea-0xa0b(%ebp),%edx8048536:b8070a0000mov$0xa07,%eax80485